package com.sth.shishan;

import org.junit.Test;
import redis.clients.jedis.Jedis;

import java.util.Set;

/**
 * @Author: sitianhong
 * @Description: 朋友圈点赞功能的实现
 * 可以点赞也可以取消点赞
 * @Since: create in 2021/6/13 0013 20:12
 */
public class RedisDemo9 {
    Jedis jedis = new Jedis("127.0.0.1", 6378);

    @Test
    public void demo() {
        // 你的用户id
        long userId = 1;
        long momentId = 150;
        long friendId = 2;
        likeMoment(friendId, momentId);

        long momentLikeUsersCount = getMomentLikeUsersCount(momentId);
        disLikeMoment(userId, momentId);
        System.out.println("momentLikeUsersCount " + momentLikeUsersCount);
    }

    // 点赞
    public void likeMoment(long userId, long momentId) {
        jedis.sadd("moment_like_users::" + momentId, String.valueOf(userId));
    }

    // 取消点赞
    public void disLikeMoment(long userId, long momentId) {
        jedis.srem("moment_like_users::" + momentId, String.valueOf(userId));
    }

    // 查看自己是否点赞过
    public boolean hasLikeMoment(long userId, long momentId) {
        return jedis.sismember("moment_like_users::" + momentId, String.valueOf(userId));
    }

    //  获取我的朋友圈是否点赞了
    public Set<String> getMomentLikeUsers(long momentId) {
        return jedis.smembers("moment_like_users::" + momentId);
    }

    // 获取我的朋友圈被几个人点赞了
    public long getMomentLikeUsersCount(long momentId) {
        return jedis.scard("moment_like_users::" + momentId);
    }
}
